package com.fdb.efp.cus.service.impl;

import com.fdb.efp.cus.service.dao.GzReturnInfoDao;
import com.fdb.efp.cus.service.domain.GzReturnInfo;
import com.fdb.basic.framework.core.base.FrameworkService;
import com.fdb.efp.cus.service.facade.GzReturnInfoService;
import com.fdb.efp.cus.service.vo.GzReturnInfoVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * Service Impl: 代发工资明细表服务实现
 *
 * @author gcb
 * @date 2020-08-06
 */
@Service("gzReturnInfoService")
public class GzReturnInfoServiceImpl implements GzReturnInfoService, FrameworkService {

    private static Logger logger = LoggerFactory.getLogger(GzReturnInfoServiceImpl.class);

    @Autowired
    private GzReturnInfoDao gzReturnInfoDao;

    /**
     * 新增数据
     *
     * @param gzReturnInfoVo
     * @return
     */
    @Override
    public int insert(GzReturnInfoVO gzReturnInfoVo) throws Exception {
        GzReturnInfo gzReturnInfo = new GzReturnInfo();
        beanCopy(gzReturnInfoVo, gzReturnInfo);
        return gzReturnInfoDao.insert(gzReturnInfo);
    }

    /**
     * 根据主键删除信息
     *
     * @param gzReturnInfoVo
     * @return
     */
    @Override
    public int deleteByPk(GzReturnInfoVO gzReturnInfoVo) throws Exception {
        GzReturnInfo gzReturnInfo = new GzReturnInfo();
        beanCopy(gzReturnInfoVo, gzReturnInfo);
        return gzReturnInfoDao.deleteByPk(gzReturnInfo);
    }

    /**
     * 根据主键更新信息
     *
     * @param gzReturnInfoVo
     * @return
     */
    @Override
    public int updateByPk(GzReturnInfoVO gzReturnInfoVo) throws Exception {
        GzReturnInfo gzReturnInfo = new GzReturnInfo();
        beanCopy(gzReturnInfoVo, gzReturnInfo);
        return gzReturnInfoDao.updateByPk(gzReturnInfo);
    }

    /**
     * 根据主键查询详情
     *
     * @param inGzReturnInfoVo
     * @return
     */
    @Override
    public GzReturnInfoVO queryByPk(GzReturnInfoVO inGzReturnInfoVo) throws Exception {
        GzReturnInfo queryGzReturnInfo = new GzReturnInfo();
        beanCopy(inGzReturnInfoVo, queryGzReturnInfo);
        GzReturnInfo queryRslGzReturnInfo = gzReturnInfoDao.queryByPk(queryGzReturnInfo);
        return beanCopy(queryRslGzReturnInfo, new GzReturnInfoVO());
    }

    @Override
    public List<GzReturnInfoVO> queryCertCodeAndCertType(GzReturnInfoVO gzReturnInfoVO) throws Exception {
        GzReturnInfo queryGzReturnInfo = new GzReturnInfo();
        beanCopy(gzReturnInfoVO, queryGzReturnInfo);
        List<GzReturnInfo> gzReturnInfos = gzReturnInfoDao.queryCertCodeAndCertType(queryGzReturnInfo);
        List<GzReturnInfoVO> arr = new ArrayList<>();
        gzReturnInfos.forEach(item->{
            GzReturnInfoVO vo = new GzReturnInfoVO();
            beanCopy(item,vo);
            arr.add(vo);
        });
        return arr;
    }
}
